import argparse

from app.core.config import settings
from app.main import app

if __name__ == '__main__':
    """
    启动函数

    ```bash
    # 基本运行
    python run.py

    # 指定端口和主机
    python run.py --host 0.0.0.0 --port 9000

    # 指定环境
    python run.py --env prod

    # 多个参数组合
    python run.py --env test --host 192.168.1.2 --port 3000 --reload
    ```
    """
    import uvicorn

    # 创建参数解析器
    parser = argparse.ArgumentParser(description='运行 FastAPI 应用')

    # 添加命令行参数
    parser.add_argument('--host', type=str, default=settings.app_host, help='主机地址')
    parser.add_argument('--port', type=int, default=settings.app_port, help='端口号')
    parser.add_argument('--env', type=str, choices=['dev', 'prod', 'test'], help='运行环境')
    parser.add_argument('--reload', action='store_false', help='启用自动重载')

    # 解析参数
    args = parser.parse_args()

    # 设置环境
    if args.env:
        import os

        os.environ['ENV'] = args.env

    # print(f"启动参数: host={args.host}, port={args.port}, env={args.env or 'dev'}, reload={args.reload}")

    # 运行应用
    uvicorn.run(app, host=args.host, port=args.port, reload=args.reload, log_config=None)
